package com.base.project.util

import android.view.View

/**
 * 操作view 的工具类
 */
object ViewUtils {

    /**
     * 移动左上view到另一个view中心点
     */
    fun scrollByCentre(startView: View, endView: View) {
        val xyArray = getToViewCentreXy(startView, endView)
        scrollBy(startView, xyArray[0], xyArray[1])
    }

    /**
     * 移动view
     */
    fun scrollBy(startView: View, x: Float, y: Float) {
        startView.animate()
            .xBy(x)
            .yBy(y)
            .duration = 0
    }

    /**
     * 获取到另一个view中心点的x,y
     */
    fun getToViewCentreXy(startView: View, endView: View): FloatArray {
        val startArray = getViewLocation(startView)

        val endArray = getViewCentreLocation(endView)

        return floatArrayOf(
            endArray[0] - startArray[0].toFloat(),
            endArray[1] - startArray[1].toFloat()
        )
    }

    /**
     * 获取view位于屏幕坐标
     * 要在view.post（Runable）里获取，即等布局变化后
     */
    fun getViewLocation(view: View): IntArray {
        val location = IntArray(2)
        view.getLocationOnScreen(location)
        return location
    }


    /**
     * 获取view位于屏幕的中心点坐标
     * 要在view.post（Runable）里获取，即等布局变化后
     */
    fun getViewCentreLocation(view: View): IntArray {
        val location = IntArray(2)
        view.getLocationOnScreen(location)
        location[0] += (view.width / 2)
        location[1] += (view.height / 2)
        return location
    }

}